﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Owin;
using CorreoSocialWeb.Models;
using CorreoSocialWeb.Views;

namespace CorreoSocialWeb.Rutas
{
    public partial class ListaDeRutas : System.Web.UI.Page
    {
        public IQueryable GridView_GetData(int startRowIndex, int maximumRows, out int totalRowCount)
        {
            var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
            var user = manager.FindById(Context.User.Identity.GetUserId());

            var opcionesPaginacion = new OpcionesDePaginacionGridView(this.GridView);

            var lista = Ruta.GetLista(user.UsuarioId
                , CheckBoxActivas.Checked
                , CheckBoxInactivas.Checked
                , opcionesPaginacion ).AsQueryable();

            totalRowCount = opcionesPaginacion.TotalCount;

            return lista;
        }
       
        public IQueryable DropDownListTamanoDePaquete_SelectMethod()
        {
            return new CorreoSocialDbContext().TamanoDePaquetes.Where(x => x.Activo && !x.Borrado).OrderBy(x => x.NúmeroDeTamaño);
        }

        public void GridView_DeleteItem(int id)
        {
            try
            {
                var usuarioId = new Views.UsuarioDePaginaHelper().GetUsuarioId(this.Context);

                Ruta.Borrar(usuarioId, id);

                this.DataBind();
            }
            catch
            {
                this.LabelError.Text = "Error al borrar ruta.";
            }
        }

        protected void LinkButtonNuevaRuta_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Rutas/NuevaRuta");
        }
        
        protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName != "Borrar")
                    return;

                int id;

                int.TryParse(e.CommandArgument.ToString(), out id);

                var usuarioId = new Views.UsuarioDePaginaHelper().GetUsuarioId(this.Context);

                Ruta.Borrar(usuarioId, id);

                this.DataBind();
            }
            catch
            {
                this.LabelError.Text = "Error al borrar Ruta.";
            }
        }

        protected void CheckBoxInactivas_CheckedChanged(object sender, EventArgs e)
        {
            this.DataBind();
        }
    }
}